package com.sc.nft.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sc.nft.entity.MallActivityShare;
import com.sc.nft.entity.dto.AdminMallActivitySharePageDTO;
import com.sc.nft.entity.dto.MallActivityShareDetailDTO;
import com.sc.nft.entity.dto.MallActivitySharePageDTO;
import com.sc.nft.entity.vo.AdminMallActivitySharePageVO;
import com.sc.nft.entity.vo.EditMallActivityShareVO;
import com.sc.nft.entity.vo.MaxRewardPercentageVO;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 分享购活动 服务类
 * </p>
 *
 * @author ligen
 * @since 2023-12-11
 */
public interface MallActivityShareService {

    /**
     * 创建分享购活动
     *
     * @param vo
     */
    void create(EditMallActivityShareVO vo);

    /**
     * 获取成团的分享购活动
     *
     * @param teamId
     * @return
     */
    MallActivityShare getByTeamId(Long teamId);

    /**
     * 获取分享购
     *
     * @param id
     * @return
     */
    MallActivityShare getById(Long id);

    /**
     * 判断活动商品是否拥有
     *
     * @param activityId
     * @return
     */
    Boolean hasShareByActivityId(Long activityId);

    /**
     * 后台分享购活动列表
     *
     * @param adminMallActivitySharePageVO
     * @return
     */
    Page<AdminMallActivitySharePageDTO> getAdminMallActivitySharePageDTO(AdminMallActivitySharePageVO adminMallActivitySharePageVO);

    /**
     * 用户端分享购活动列表
     *
     * @param userId
     * @param pageNo
     * @param pageSize
     * @return
     */
    Page<MallActivitySharePageDTO> getMallActivitySharePageDTO(Long userId, Integer pageNo, Integer pageSize);

    /**
     * 分享购活动详情
     *
     * @param id
     * @return
     */
    MallActivityShareDetailDTO getMallActivityShareDetailDTO(Long id);

    /**
     * 分享购活动上架
     *
     * @param id
     */
    void enable(Long id);

    /**
     * 分享购活动下架
     *
     * @param id
     */
    void disable(Long id);

    /**
     * 分享购活动下架
     *
     * @param activityId
     */
    void disableByActivityId(Long activityId);

    /**
     * 获取营销活动的分享购
     *
     * @param activityId
     * @return
     */
    List<MallActivityShare> getListByActivityId(Long activityId);

    /**
     * 修改分享购活动排序
     *
     * @param id
     * @param sort
     */
    void updateSort(Long id, Integer sort);

    /**
     * 获取分享购最大收益
     *
     * @param maxRewardPercentageVO
     * @return
     */
    BigDecimal maxRewardPercentage(MaxRewardPercentageVO maxRewardPercentageVO);

}
